package com.ce.pms.charge.service;

import java.util.List;
import java.util.Set;

import com.ce.pms.base.service.IPmsBaseService;
import com.ce.pms.charge.model.AbstractStaVersion;
import com.ce.pms.charge.model.OtherVersion;
import com.ce.pms.charge.vo.ChargeStaVO;
import com.ce.pms.charge.vo.ChargeStaVersionVO;
import com.ce.pms.charge.vo.GeneralVersionVO;
import com.ce.pms.charge.vo.SectionStandardVO;
import com.sitechasia.webx.core.support.Page;

public interface IChargeStaService extends IPmsBaseService {
	/**
	 * 方法描述: 查询某个收费项目下所有收费标准
	 *
	 * @author 胡煦 Create on:2008-8-18
	 * @param chargeItemId
	 * @return List<ChargeStaVO> Edit author: Edit on: 修改原因：
	 */
	public List<ChargeStaVO> queryAllChargeSatBy(Long chargeItemId);

	/**
	 * 方法描述: 根据收费标准Id查询当前收费标准版本VO
	 * @author 胡煦
	 * Create on:2008-8-8
	 * @param chargeStaId
	 * @return ChargeStaVersionVO
	 * Edit author:
	 * Edit on:
	 * 修改原因：
	 */
	public ChargeStaVersionVO findVersionByChargeStaId(Long chargeStaId);
	/**
	 * 方法描述: 根据Id查询收费标准VO
	 * @author 胡煦
	 * Create on:2008-8-8
	 * @param chargeStaId
	 * @return ChargeStaVO
	 * Edit author:
	 * Edit on:
	 * 修改原因：
	 */
	public ChargeStaVO findChargeStaById(Long chargeStaId);
	/**
	 * 方法描述:收费标准及版本新增方法
	 * @author 胡煦
	 * Create on:2008-8-8
	 * @param ChargeStaVO,ChargeStaVersionVO,sectionStandardVOSet
	 * @return ChargeStaVO
	 * Edit author:
	 * Edit on:
	 * 修改原因：
	 */
	public ChargeStaVO addChargeStaAndVersion(ChargeStaVO chargeStaVO,ChargeStaVersionVO staVersionVO,Set<SectionStandardVO> sectionStandardVOSet);
	/**
	 * 方法描述:收费标准及版本修改方法
	 * @author 胡煦
	 * Create on:2008-8-8
	 * @param ChargeStaVO,ChargeStaVersionVO,sectionStandardVOSet
	 * @return ChargeStaVO
	 * Edit author:
	 * Edit on:
	 * 修改原因：
	 */
	public ChargeStaVO editChargeStaAndVersion(ChargeStaVO chargeStaVO,ChargeStaVersionVO staVersionVO,Set<SectionStandardVO> sectionStandardVOSet);
	/**
	 * 方法描述: 分页查询收费标准列表
	 * @author 胡煦
	 * Create on:2008-8-1
	 * @param chargeItemId, pageNo, pageSize
	 * @return Page
	 * Edit author:
	 * Edit on:
	 * 修改原因：
	 */
	public Page queryChargeSatByPage(Long chargeItemId, int pageNo,int pageSize);
//	/**
//	 * 方法描述:新增收费标准
//	 * @author 胡煦
//	 * Create on:2008-8-1
//	 * @param ChargeStaVO
//	 * @return ChargeStaVO
//	 * Edit author:
//	 * Edit on:
//	 * 修改原因：
//	 */
//	public ChargeStaVO addChargeSta(ChargeStaVO chargeStaVO);
//	/**
//	 * 方法描述:修改收费标准
//	 * @author 胡煦
//	 * Create on:2008-8-1
//	 * @param ChargeStaVO
//	 * @return ChargeStaVO
//	 * Edit author:
//	 * Edit on:
//	 * 修改原因：
//	 */
//	public ChargeStaVO editChargeSta(ChargeStaVO chargeStaVO);
	/**
	 * 方法描述:删除收费标准
	 * @author 胡煦
	 * Create on:2008-8-1
	 * @param chargeStaId
	 * @return void
	 * Edit author:
	 * Edit on:
	 * 修改原因：
	 */
	public void deleteChargeSta(Long chargeStaId);
	/**
	 * 方法描述: 根据收费标准名称查询记录数
	 *  注：新建判断chargeStaName的唯一性时，chargeStaId为null；修改判断chargeStaName的唯一性时，则需要传入修改前的chargeStaId<br>
	 * @author 胡煦
	 * Create on:2008-8-1
	 * @param chargeStaName
	 * @return boolean：返回true表示已经被引用，false则未被引用
	 * Edit author:
	 * Edit on:
	 * 修改原因：
	 */
	public boolean checkChargeStaNameIsOnly(String chargeStaName,Long chargeStaId);

	/**
	 * 功能描述:根据标准的名称，查询固定收费项目的有有效收费标准及价格<br>
	 * @param <br>
	 * @return<br>
	 *
	 * Create author:xuhaidui<br>
	 * Create on:2009-1-5<br>
	 * Edit author:<br>
	 * Edit on:<br>
	 * Why:<br>
	 */
	public List<ChargeStaVO> queryChargeSelectList(String chargeStaName);
}
